This disclosure relates generally to the field of computer programming. More particularly, but not by way of limitation, it relates to an execution model for allowing a graphics processor unit (GPU) to enqueue kernels for execution on the GPU.
As GPUs continue to evolve into high performance parallel compute devices, more and more applications are written to perform parallel computations in GPUs similar to general purpose compute devices. Today, those applications are limited because the execution model used by compute systems employing GPUs requires all work to be processed on the GPU to be created by a host processor. The GPU cannot create work for itself.
Standards have evolved for programming high-performance compute systems incorporating CPUs and GPUs. One such standard is the OpenCL (Open Computing Language) industry standard, which is an open, royalty-free standard for general-purpose parallel programming of heterogeneous systems, which may be used in personal computers, servers, and handheld or embedded devices. These standards provide an execution model to enable programmers to write code with enhanced performance and functionality.